package com.zkthink.ceres.pay.wechat.v3.service.ecommerce;

import com.zkthink.ceres.pay.wechat.v3.entity.request.applyments.*;
import com.zkthink.ceres.pay.wechat.v3.entity.result.applyments.*;

/**
 * <p>
 * 二级商户进件API
 * 电商平台，可使用该接口，帮助其二级商户进件成为微信支付商户。
 * <p>
 * 用户提交商家进件资料后，电商平台通过调用《二级商户进件》接口帮助二级商户提交商户进件资料。
 * 步骤二提交进件资料后，电商平台需通过微信支付返回的“微信支付申请单号”和“业务申请编号”商户后台调用《查询申请状态API》接口查询二级商户进件状态。
 * 步骤三当进件成功后，若二级商户需修改结算帐号时，电商平台可调用《修改商户结算信息API》接口来帮助二级商户修改结算信息。通过调用商户后台调用《查询商户结算信息API》接口来查询修改情况。
 * </p>
 *
 * @author vivi.huang
 * @since 2020/6/16
 */
public interface ApplymentsService {

    /**
     * 二级商户进件申请
     * 电商平台，可使用该接口，帮助其二级商户进件成为微信支付商户。
     *
     * @param createApplymentsRequest
     * @return
     */
    CreateApplymentsResult createApplyments(CreateApplymentsRequest createApplymentsRequest);

    /**
     * 查询申请状态API
     * 电商平台通过查询申请状态API查询二级商户入驻申请结果
     * @param queryApplymentsRequest
     * @return
     */
    QueryApplymentsResult queryApplymentStatus(QueryApplymentsRequest queryApplymentsRequest);


    /**
     * 下载平台证书
     *
     * @return
     */
    CertResult downLoadCert(CertRequest certRequest);


    /**
     * 修改结算帐号API
     * 普通服务商（支付机构、银行不可用），可使用本接口修改其进件、已签约的特约商户-结算账户信息。
     *
     * @param modifySettlementRequest
     * @return
     */
    ModifySettlementResult modifySettlement(ModifySettlementRequest modifySettlementRequest);

    /**
     * 查询结算账户API
     * 普通服务商（支付机构、银行不可用），可使用本接口查询其进件、已签约的特约商户-结算账户信息（敏感信息掩码）。 该接口可用于核实是否成功修改结算账户信息、及查询系统汇款验证结果。
     *
     * @param querySettlementRequest
     * @return
     */
    QuerySettlementResult querySettlement(QuerySettlementRequest querySettlementRequest);

}